package ar.edu.utn.frba.disenio.aterrizar.usuario;

import java.util.ArrayList;
import ar.edu.utn.frba.disenio.aterrizar.aerolineas.Vuelo;

public abstract class Usuario {

	private String nombre;
	private String apellido;
	private String dni;
	private int recargoUsuario;
	private double compras;
	private boolean superOfertas;
	private ArrayList<ArrayList<Vuelo>> busquedas = new ArrayList<ArrayList<Vuelo>>();
	private ArrayList<Vuelo> comprasRealizadas = new ArrayList<Vuelo>();
	private ArrayList<Vuelo> reservasRealizadas = new ArrayList<Vuelo>();
	
	public abstract boolean podesReservar();
	
	public void agregarBusquedaEstadistica(ArrayList<Vuelo> resultado){
		this.getBusquedas().add(resultado);
	}
	
	public void agregarCompraRealizada(Vuelo vuelo){
		this.getComprasRealizadas().add(vuelo);
		this.compras += vuelo.getValor();
	}
	
	public void agregarReservaRealizada(Vuelo vuelo){
		if(!this.getReservasRealizadas().contains(vuelo)) this.getReservasRealizadas().add(vuelo);
	}
	
	///// AYUDA DEBUG //////
	
	public void mostrarVuelosBuscados(){
		
		ArrayList<ArrayList<Vuelo>> busquedas = this.getBusquedas();
		
		for(ArrayList<Vuelo> unaBusqueda : busquedas){
			for(Vuelo unVuelo : unaBusqueda){
				System.out.print(unVuelo.codigo);
				System.out.print(";");
				System.out.print(unVuelo.valor);
				System.out.print(";");
				System.out.print(unVuelo.clase);
				System.out.print(";");
				System.out.print(unVuelo.ubicacion);
				System.out.print(";");
				System.out.print(unVuelo.estado);
				System.out.print(";");
				System.out.print(unVuelo.origen);
				System.out.print(";");
				System.out.print(unVuelo.destino);
				System.out.print(";");
				System.out.print(unVuelo.horaSalida);
				System.out.print(";");
				System.out.print(unVuelo.horaLlegada);
				System.out.print(";");
				System.out.print(unVuelo.duracion);
				System.out.println();
			}
		}		
	}
	
	//////////
	
	//// Getters y Setters /////
	
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getApellido() {
		return apellido;
	}
	public void setApellido(String apellido) {
		this.apellido = apellido;
	}
	public String getDni() {
		return dni;
	}
	public void setDni(String dni) {
		this.dni = dni;
	}
	public int getRecargoUsuario() {
		return recargoUsuario;
	}
	public void setRecargoUsuario(int recargoUsuario) {
		this.recargoUsuario = recargoUsuario;
	}
	public double getCompras() {
		return compras;
	}
	public void setCompras(double compras) {
		this.compras = compras;
	}
	public ArrayList<ArrayList<Vuelo>> getBusquedas() {
		return busquedas;
	}
	public void setBusquedas(ArrayList<ArrayList<Vuelo>> busquedas) {
		this.busquedas = busquedas;
	}
	public boolean isSuperOfertas() {
		return superOfertas;
	}
	public void setSuperOfertas(boolean superOfertas) {
		this.superOfertas = superOfertas;
	}
	
	public ArrayList<Vuelo> getComprasRealizadas() {
		return comprasRealizadas;
	}

	public void setComprasRealizadas(ArrayList<Vuelo> comprasRealizadas) {
		this.comprasRealizadas = comprasRealizadas;
	}

	public ArrayList<Vuelo> getReservasRealizadas() {
		return reservasRealizadas;
	}

	public void setReservasRealizadas(ArrayList<Vuelo> reservasRealizadas) {
		this.reservasRealizadas = reservasRealizadas;
	}

	//////////////////////////////////////////
}